package com.coder.rental.config;

import com.coder.rental.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author: zhanglin
 * @description:   统一全局异常类
 * @date 2025/3/22
 */
//定义一个全局的异常处理类
@RestControllerAdvice
//使用lombok提供的@Slf4j注解，方便记录日志
@Slf4j
public class GlobalException {
    /*
    * 处理所有继承自Exception的异常
    * e 抛出异常对象
    * 返回一个表示操作失败的结果对象，其中包含异常信息
    * */
    @ExceptionHandler(value = Exception.class)
    public Result handleException(Exception e){
        //记录异常信息日志
        log.error("异常信息：{}",e.getMessage());
        // log.error("异常堆栈：{}",e.printStackTrace());
        e.printStackTrace();
        //返回一个失败的结果，并设置失败信息为异常信息
        //fail()方法在Result类中表示统一创建失败结果对象
        return Result.fail().setMessage(e.getMessage());
    }
    
}
